package Model;

import java.awt.Color;

import View.IKiirhato;
import View.IMegjelenitheto;
import View.Megjelenitendo;


/**
 * 
 * Minden entitás absztrakt ősosztálya.
 *
 */

public abstract class Entitas implements IIttVan, IKiirhato, IMegjelenitheto
{
	
	protected java.awt.Color color;
	
	/** Eltárolja hogy melyik Mezőn van az Entitás. */
	protected Mezo holvagyok;
	
	private static int _azonosito;
	
	protected int azonosito;
	
	public int getAzonosito()
	{
		return azonosito;
	}

	public Entitas()
	{
		azonosito = _azonosito++;
	}
	
	static
	{
		_azonosito = 1;
	}

	/**
	 * Visszaadja azt a Mezőt amin az Entitás éppen tartózkodik.
	 * @return A Mező amin az Entitás éppen tartózkodik.
	 */
	public Mezo holvagyok()
	{
		return holvagyok;
	}

	/**
	 * A paraméterben kapott entitást átrakja a Mezőre.
	 * @param mezo Egy Mező, amire át kívánjuk rakni az Entitást.
	 */
	public void iderak(Mezo mezo)
	{
		if(holvagyok != null) // ha van valahol az entitas
		{
			holvagyok.levesz(this); // onnan leveszi magat
			holvagyok = null; // most nincs sehol
		}
		
		mezo.rarak(this); // rarakja a masik mezore
		holvagyok = mezo; // megjegyzi hogy ott van
	}

	/**
	 * Itt még nem implementált függvény.
	 * @param hangya Egy Hangya objektum.
	 */
	public void ittVan(Hangya hangya)
	{
		//
	}
	
	/**
	 * Itt még nem implementált függvény.
	 * @param hangyaboly Egy Hangyaboly objektum.
	 */
	public void ittVan(Hangyaboly hangyaboly)
	{
		//
	}

	/**
	 * Itt még nem implementált függvény.
	 * @param hsun Egy Hangyászsün objektum.
	 */
	public void ittVan(HangyaszSun hsun)
	{
		//
	}

	/**
	 * Itt még nem implementált függvény.
	 * @param szs Egy SzagSpray objektum.
	 */
	public void ittVan(SzagSpray szs)
	{
		//
	}

	/**
	 * Itt még nem implementált függvény.
	 * @param olS Egy OloSpray objektum.
	 */
	public void ittVan(OloSpray olS)
	{
		//
	}

	/**
	 * Itt még nem implementált függvény.
	 * @param sz Egy Szag objektum.
	 */
	public void ittVan(Szag sz)
	{
		//
	}
	
	public void ittVan(Kavics k)
	{
		holvagyok.levesz(this);//meghal
		//BS?
	}
	
	public Megjelenitendo Megjelenit()
	{
		Megjelenitendo m =  new Megjelenitendo();
		m.setBackgroundColor(color);
		return m;
	}
}